Processor systems used for critical real-time processing applications have inherent problems in determining when a hardware failure has occurred and taking subsequent corrective action. One method of detecting such failures and maintaining consistent operation is to use a lockstep processing system having redundant processors. In such situations, the processors each perform the same exact instruction at the same time. This is called lockstep processing. If a mismatch between the inputs or the outputs of the processors exists, the processors are no longer operating in lockstep with one another.
However, the lockstep processing system has its drawbacks. In particular, asynchronous inputs to the lockstep processing system will generally fail. Whenever asynchronous signals are sampled, there are times when the input signal will change during the sampling time. When this occurs, there is a probability that the input signals change may not be seen by one of the processors. As an example, when the input signal causes a processor interrupt to occur, one processor may respond to the interrupt and start execution of an interrupt service routine before the other processor. Hence, the two processors will not remain in lockstep even though a hardware fault has not occurred.